Git Hooks

தானியங்கி ஸ்கிரிப்ட்கள் - குறிப்பிட்ட Git நிகழ்வுகளில் தானாக இயங்கும்

Git Hooks என்றால் என்ன?

Git hooks என்பது குறிப்பிட்ட Git நிகழ்வுகள் நடக்கும் போது தானாக இயங்கும் ஸ்கிரிப்ட்கள் ஆகும், கமிட் செய்தல் அல்லது குறியீட்டை push செய்தல் போன்றவை.

ஏன் Hooks பயன்படுத்த வேண்டும்?

Hooks மீண்டும் மீண்டும் செய்யும் பணிகளை தானியங்கி செய்யவும், கோடிங் தரங்களை செயல்படுத்தவும், பிரச்சனைகளை விரைவில் கண்டறியவும் உதவுகின்றன.

சோதனைகளை இயக்கவும்

ஒவ்வொரு கமிட் அல்லது push-க்கு முன் சோதனைகளை இயக்கவும்

குறியீட்டு பாணியை சரிபார்க்கவும்

குறியீட்டு பாணியை தானாகவே சரிபார்க்கவும்

மோசமான கமிட் செய்திகளைத் தடுக்கவும்

பொருத்தமற்ற கமிட் செய்திகளைத் தடுக்கவும்

அனைவருக்கும் விதிகளை செயல்படுத்தவும்

உங்கள் குழுவில் உள்ள அனைவருக்கும் விதிகளை செயல்படுத்தவும்

Hooks எங்கு உள்ளன?

Hooks உங்கள் களஞ்சியத்திற்குள் .git/hooks இல் சேமிக்கப்பட்டுள்ளன.

இயல்பாக, .sample என்று முடியும் மாதிரி ஸ்கிரிப்ட்களை நீங்கள் காண்பீர்கள்.

எடுத்துக்காட்டு: கிடைக்கக்கூடிய Hooks-ஐ பட்டியலிடவும்

ls .git/hooks

ஒரு Hook-ஐ எவ்வாறு இயக்குவது

ஒரு hook-ஐ இயக்க, .sample நீட்டிப்பை அகற்றி ஸ்கிரிப்டை இயக்கக்கூடியதாக ஆக்கவும்.

எடுத்துக்காட்டாக, pre-commit-ஐ இயக்க:

எடுத்துக்காட்டு: pre-commit Hook-ஐ இயக்கவும் (Linux/macOS)

mv .git/hooks/pre-commit.sample .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

Windows-ல், கோப்பை pre-commit என மறுபெயரிட்டு, அது உங்கள் ஷெல் மூலம் இயக்கப்பட முடியும் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் (தேவைப்பட்டால் .bat அல்லது .ps1 பயன்படுத்தவும்).

Hooks-ன் வகைகள்

பல வகையான hooks உள்ளன, ஆனால் மிகவும் பொதுவானவை:

1

pre-commit Hook

pre-commit hook நீங்கள் ஒரு கமிட் செய்வதற்கு முன் இயங்கும்.

குறியீட்டு பாணியை சரிபார்க்க, சோதனைகளை இயக்க, அல்லது ஏதாவது தவறாக இருந்தால் ஒரு கமிட்டை நிறுத்த இதைப் பயன்படுத்தலாம்.

எடுத்துக்காட்டு: எளிய pre-commit Hook

#!/bin/sh
# Stop commit if any .js file has "console.log"
grep -r 'console.log' *.js && {
  echo "Remove console.log before committing!"
  exit 1
}
2

commit-msg Hook

commit-msg hook கமிட் செய்தியை சரிபார்க்கிறது அல்லது திருத்துகிறது.

எடுத்துக்காட்டாக, இது டிக்கெட் எண் இல்லாமல் கமிட்டுகளைத் தடுக்க முடியும்.

எடுத்துக்காட்டு: commit-msg Hook

#!/bin/sh
# Block commit if message does not contain a ticket number
if ! grep -qE 'JIRA-[0-9]+' "$1"; then
  echo "Commit message must have a ticket number (e.g. JIRA-123)"
  exit 1
fi
3

pre-push Hook

pre-push hook நீங்கள் குறியீட்டை ஒரு தொலைதூரத்திற்கு push செய்வதற்கு முன் இயங்கும்.

குறியீட்டைப் பகிர்வதற்கு முன் சோதனைகள் அல்லது சரிபார்ப்புகளை இயக்க இதைப் பயன்படுத்தலாம்.

எடுத்துக்காட்டு: pre-push Hook

#!/bin/sh
npm test || exit 1

சேவையக-பக்க Hooks

சில hooks (pre-receive போன்றவை) Git சேவையகத்தில் இயங்கும், உங்கள் கணினியில் அல்ல.

களஞ்சியத்திற்கு push செய்யும் அனைவருக்கும் இவை விதிகளை செயல்படுத்த முடியும்.

எடுத்துக்காட்டு: pre-receive Hook

#!/bin/sh
# Block pushes to main branch
grep refs/heads/main || exit 1

தனிப்பயன் Hooks

எந்தவொரு தனிப்பயன் ஸ்கிரிப்டையும் ஒரு hook ஆக எழுதலாம்.

அதை .git/hooks இல் வைத்து இயக்கக்கூடியதாக ஆக்கவும்.

எடுத்துக்காட்டு: தனிப்பயன் Hook

#!/bin/sh
echo "Hello from my custom hook!"

பிழைத்திருத்தம் மற்றும் சிறந்த நடைமுறைகள்

இயக்கக்கூடிய ஸ்கிரிப்ட்

உங்கள் hook ஸ்கிரிப்ட் இயக்கக்கூடியது என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் (chmod +x scriptname)

பிழைத்திருத்தம்

உங்கள் ஸ்கிரிப்ட் என்ன செய்கிறது என்பதைக் காண echo அறிக்கைகளைச் சேர்க்கவும்

வெளியேறும் குறியீடு

வெளியேறும் குறியீட்டைச் சரிபார்க்கவும்: exit 0 வெற்றி, exit 1 தோல்வி

Windows ஆதரவு

Windows-ல், தேவைப்பட்டால் .bat அல்லது .ps1 ஸ்கிரிப்ட்களைப் பயன்படுத்தவும்

💡 Jassif Team சிறந்த நடைமுறைகள்

எளிமையாகவும் வேகமாகவும் வைக்கவும்: hooks எளிமையாகவும் வேகமாகவும் வைக்கவும் - மெதுவான hooks உங்கள் பணிப்பாய்வை மெதுவாக்கும்

உங்கள் குழுவுடன் பகிரவும்: பயனுள்ள hooks-ஐ உங்கள் குழுவுடன் பகிரவும் (ஆனால் நினைவில் கொள்ளுங்கள்: hooks இயல்பாக பதிப்பாக்கப்படவில்லை)

தொடங்குபவர்களுக்கு: முதலில் எளிய hooks-உடன் தொடங்குங்கள், பின்னர் சிக்கலானவற்றுக்குச் செல்லுங்கள்

முக்கியமான குறிப்பு

📝 Jassif Team குறிப்பு

Hooks சோதனைகள் அல்லது குறியீட்டு பகுப்பாய்வு போன்ற சரிபார்ப்புகளை தானியங்கி செய்யவும் குழு தரங்களை செயல்படுத்தவும் சக்திவாய்ந்தவை.

கிளையன்-பக்க hooks உங்கள் கணினியில் இயங்கும். சேவையக-பக்க hooks Git சேவையகத்தில் இயங்கும்.

Hooks உங்கள் வளர்ச்சி செயல்முறையை மேம்படுத்தவும் பிழைகளை விரைவில் கண்டறியவும் உதவுகின்றன.

விரைவு குறிப்பு

Hooks இடம்

களஞ்சியத்தில் hooks

.git/hooks/

Hook-ஐ இயக்கவும்

மாதிரியிலிருந்து இயக்கவும்

mv file.sample file

அனுமதிகள்

ஸ்கிரிப்டை இயக்கக்கூடியதாக ஆக்கவும்

chmod +x hookname

தனிப்பயன் ஸ்கிரிப்ட்

எந்த ஸ்கிரிப்டும் hook ஆக முடியும்

#!/bin/sh
echo "Custom hook"